home *** CD-ROM | disk | FTP | other *** search
/ isnet Internet / Isnet Internet CD.iso / prog / hiz / 09 / 09.exe / adynware.exe / perl / lib / site / Net / Config.pm < prev    next >
Encoding:
Perl POD Document  |  1999-12-28  |  1.5 KB  |  81 lines

  1. package Net::Config;
  2.  
  3. require Exporter;
  4. use vars qw(@ISA @EXPORT %NetConfig);
  5. use strict;
  6.  
  7. @EXPORT = qw(%NetConfig);
  8. @ISA = qw(Exporter);
  9.  
  10. sub set
  11. {
  12.  my $pkg = shift if @_ % 2;
  13.  my %cfg = @_;
  14.  
  15.  return unless @_;
  16.  
  17.  require Data::Dumper;
  18.  require IO::File;
  19.  require Carp;
  20.  require File::Copy;
  21.     
  22.  my $mod = $INC{'Net/Config.pm'} or
  23.     Carp::croak "Can't find myself";
  24.  
  25.  my $bak = $mod . "~";
  26.  
  27.  print "Updating $mod...\n";
  28.  
  29.  File::Copy::copy($mod,$bak) or
  30.     Carp::croak "Cannot create backup file $bak: $!";
  31.  
  32.  print "...backup at $bak\n";
  33.  
  34.  my $old = new IO::File $bak,"r" or
  35.     Carp::croak "Can't open $bak: $!";
  36.  
  37.  my $new = new IO::File $mod,"w" or
  38.     Carp::croak "Can't open $mod: $!";
  39.  
  40.  local $SIG{'__DIE__'} = sub {
  41.         print "Restoring $mod from backup!!\n";
  42.         unlink $mod;
  43.         rename $bak, $mod;
  44.         print "Done.\n";
  45.         exit 1;
  46.        };
  47.  
  48.  %NetConfig = (%NetConfig, %cfg);
  49.  
  50.  while (<$old>)
  51.   {
  52.    last if /^%NetConfig/;
  53.    $new->print($_);
  54.   }
  55.  
  56.  $new->print ( Data::Dumper->Dump([\%NetConfig],['*NetConfig']) );
  57.  
  58.  $new->print("\n1;\n");
  59.  
  60.  close $old;
  61.  close $new;
  62. }
  63.  
  64. %NetConfig = (
  65.     test_hosts => '0',
  66.     nntp_hosts => ['news'],
  67.     snpp_hosts => [],
  68.     pop3_hosts => [],
  69.     ftp_ext_passive => '0',
  70.     smtp_hosts => ['mailhost'],
  71.     inet_domain => 'nowhere.com',
  72.     ph_hosts => ['dirserv'],
  73.     test_exist => '0',
  74.     daytime_hosts => [],
  75.     ftp_int_passive => '0',
  76.     ftp_firewall => undef,
  77.     time_hosts => [],
  78.  
  79. );
  80. 1;
  81.